#ifndef KF_H
#define KF_H

typedef struct
{
  float LastP;  // �ϴι���Э����
  float out;    // �������˲������
  float Q;      // ��������Э����
  float R;      // �۲�����Э����
} EKF_s;        // Kalman Filter parameter

typedef struct
{
  float LastP;  // �ϴι���Э����
  float Now_P;  // ��ǰ����Э����
  float out;    // �������˲������
  float Kg;     // ����������
  float Q;      // ��������Э����
  float R;      // �۲�����Э����
} KF_s;         // Kalman Filter parameter

void InitKF(KF_s *kf, float Q, float R);
float KalmanFilterCalc(KF_s *kfp, float input);
void Kalman_Init(void);
void Kalman_Cal(float r_delta_phi, float r_delta_theta, float l_delta_phi, float l_delta_theta, float speed);

extern KF_s kf_r_delta_phi;
extern KF_s kf_r_delta_theta;
extern KF_s kf_l_delta_phi;
extern KF_s kf_l_delta_theta;
extern KF_s kf_speed;

#endif
